package com.partsoft.dits.dsm;

import java.util.Map;

import javax.sql.DataSource;

/**
 * 数据源工厂接口
 */
public interface DataSourceFactory {
	
	/**
	 * 通过名称获得一个数据源
	 * @param name 数据源名称
	 * @return 一个可用的数据源{@link DataSource}
	 * @exception 如果不存在则抛出一个运行时异常
	 */
	DataSource getDataSource(String name) throws RuntimeException;
	
	
	/**
	 * 获得数据源数组
	 */
	DataSource[] getDataSources();

	/**
	 * 获得命名的数据源
	 */
	Map<String, DataSource> getNamedDataSource();
	
	/**
	 * 获得定义的数据源名称
	 */
	String[] getDataSourceNames();
	
	/**
	 * 判断数据源名称是否存在
	 * @param name 数据源名称
	 * @return true表示存在
	 */
	boolean hasDataSource(String name);
	
	/**
	 * 测试数据源是否可用 
	 * @param dsName 数据源名称
	 * @return true表示可用
	 */
	boolean testDataSource(String dsName)  throws RuntimeException;

}
